const logInfo = require('../../util/logInfo');

module.exports = class GeneratorAPI {
  constructor(id, generator, options, rootOptions) {
    this.id = id;
    this.generator = generator;
    this.rootOptions = rootOptions;

    logInfo(
      "GeneratorAPI 主要对外接口：injectImports /injectRootOptions /extendPackage /render，均为填充模板内容和package.json"
    );
    logInfo(
      "GeneratorAPI 的核心即定义了对外接口用于创建 template 文件和更新 package 相关配置"
    );
    logInfo("而 vue-cli 的各个功能又通过不同的插件，调用改文件api注入各种能力。")
  }

  hasPlugin(id) {
    return false;
  }

  injectImports(file, imports) {
    console.log("injectImports:", file, imports);
  }

  injectRootOptions(file, options) {
    console.log("injectRootOptions:", file, options);
  }

  extendPackage(fields) {
    console.log("extendPackage:", fields);
  }

  render(source, additionalData = {}, ejsOptions = {}) {
    console.log(source);
    logInfo("GeneratorAPI-render：这里是填充模板内容的主要方法");
    logInfo(
      "这里功能分为两块:1. 从源文件copy文件，2. 根据参数替换源文件中的某些参数（比如 route中的history模式），这里相当于封装了一个模板处理方法。"
    );
  }
};
